package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController  //内部含有@ResponseBody  可以将服务器端数据转化为JSON串返回
@CrossOrigin
public class UserController {
    @Autowired(required = false)
    private UserService userService;
    @RequestMapping("/findall")
    public List<User> findAll(){
        return userService.findAll();
    }
    /**
     * url:http://localhost:8090/findUserById?id=1
     * 请求类型  Get/Delete   Post/Put`
     * 不同类型的请求注解说明:
     * @GetMapping  只允许接收Get类型
     * @PostMapping  只允许接收Post类型
     * @DeleteMapping  只允许接收Delete类型
     * @PutMapping  只允许接收Put类型
     * 参数说明:
     *  1.参数名称必须与url中的名称一样
     *  2.SpringMVC可以根据用户的需求,自动实现类型的转化
     *      底层实现:
     *          SpringMVC所有的参数默认都是String类型
     *          根据用户参数的类型,实现自动转化
     */
    @GetMapping("findUserById")
    public User findUserById(Integer id){

        return userService.findUserById(1);
    }

    /**
     * 规则:  SpringMVC可以利用对象的方式接收
     * 底层实现:  参数name="xxx"  拼接set,形成setName,之后检查对象中是否有对应的setName()
     *          如果匹配该方法,则为对象值
     * @return
     */
    @GetMapping("findUserByNameAndSex")
    public List<User> findUserByNameAndSex(User user){
        return userService.finUserByNameAndSex(user);
    }
    @GetMapping("findUserByNameAndAge/{name}/{age}")
    public List<User> findUserByNameAndAge(User user){
        return userService.findUserByNameAndAge(user);
    }

}
